package com.juneng.utils;


import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.security.SecureRandom;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @Description 随机工具
 * @Author dengguikun
 * @Date 2019-01-09 20:28
 **/
public class RandomUtils {

    public static String generateSalt() {
        SecureRandom random = new SecureRandom();
        return String.valueOf(random.nextInt(2147483647));
    }


    /**
     * 随机生成 10位数字
     *
     * @author: dengguikun
     * @date: 2019-06-27 13:51
     **/
    public static String randomCode() {
        return String.valueOf((int) ((Math.random() * 9 + 1) * 1000000000));
    }

    /**
     * 随机生成 4 位数字
     *
     * @author: dengguikun
     * @date: 2019-06-27 13:51
     **/
    public static String randCode() {
        return String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
    }

    /**
     * 生成指定位数的随机数
     *
     * @param length
     * @return
     */
    public static List<Integer> getRandom(int length, int num) {
        String val = "";
        List<Integer> arr = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            int i1 = random.nextInt(num);
            arr.add(i1);
        }
        return arr;
    }


    /**
     * 生成唯一id
     *
     * @return
     */
    public static String getId() {
        int hashCodeV = UUID.randomUUID().toString().hashCode();
        if (hashCodeV < 0) {//有可能是负数
            hashCodeV = -hashCodeV;
        }
        // 0 代表前面补充0
        // 4 代表长度为4
        // d 代表参数为正数型
        return String.format("%4d", hashCodeV);
    }

    /**
     * 生成唯一订单号
     *
     * @return
     */
    public static String getOrderIdByUUId() {
        Date date = new Date();
        DateFormat format = new SimpleDateFormat("yyyyMMdd");
        String time = format.format(date);
        int hashCodeV = UUID.randomUUID().toString().hashCode();
        if (hashCodeV < 0) {//有可能是负数
            hashCodeV = -hashCodeV;
        }
        // 0 代表前面补充0
        // 4 代表长度为4
        // d 代表参数为正数型
        return time + String.format("%011d", hashCodeV);
    }

    public static String generateRefID() {
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        Properties prop = new Properties(System.getProperties());
        String userName = prop.getProperty("user.name");
        String refId = "ST_" + userName + "_" + sdf.format(now);
        return refId;
    }
/*
    public class RandomName {
        public static void main(String[] args) {
            */

    /**
     * 随机产生100个昵称
     *//*
            HashSet<String> set = new HashSet<String>();
            for (int i = 0; i < 100; i++) {
                String chineseName = randomName(true,3);
                if (!set.contains(chineseName)) {
                    set.add(chineseName);
                }
            }
            Iterator<String> iterator = set.iterator();
            while (iterator.hasNext()) {
                System.err.print(iterator.next() + "\n");
            }

        }*/

    //随机生成名字
    public static String getname() {
        String[] englishCodeArray = {"旧心酸", "猪小哼", "樱の舞", "声声慢", "糖豆豆*", "别皱眉", "果小冻", "声声慢", "早茶光", "怡人清欢", "光作笺", "花开了一季", "但愿花开如初", "聆听雨声", "彼岸星光",
                "执手踏青", "泛舟北海中", "风扑进怀", "风蛍缓缓", "掩门*", "不止心伤", "果小冻", "春风十里不如nǐ", "柚子", "清水漪澜", "逆光海", "影依风", "旧不在丶", "旧时光", "本人单身",
                "落花时节", "森林屿麓", "笑给风听", "烟雨醉巷", "花漫城", "落蝶", "吻风", "心碎了无痕", "背对背的走", "明晨紫", "九茉莉", "花謝★花开", "云裳", "微梦雨", "梦中轻拥",
                "风雨踏梦行", "樱花味女孩", "柠檬泪", "日之夕矣", "半世浮生", "逆水寒", "雨后初晴", "不缺友人", "听风说旧人", "哑剧", "白色控", "厌己", "森屿海巷", "断桥再见", "坚毅之梦",
                "щǒ冇寎", "遗忘", "樱花涵", "指尖微凉", "花漫城", "落蝶", "吻风", "心碎了无痕", "薄荷凉", "明晨紫", "孤魄", "热巴", "离心咒ゝ", "唯念", "依然血红",
                "沦陷的痛", "疯子的梦想", "哎呦喂", "死拼i", "追梦", "孤浪", "做人上人", "逆夏", "幼栀", "灯半昏时", "随遇而安", "天天向上", "可爱到炸", "静听年华", "瀚海阑干",
                "放浪江湖", "预约结局", "青衣水袖", "树上的妖怪", "無力哀嘆", "仲夏", "夜忧傷", "语隔秋烟", "叶散冰离", "夏末ζ烟雨", "青衫", "离雨弥港", "云裳", "清风", "颜熏末",
                "清白小生", "漠筱暄", "良辰", "二度↘犯罪", "歌者与猫", "猫", "荖葙恏", "卮言", "声声慢", "爱卿", "浅湾", "谏书稀", "悲魂曲", "风继续吹", "泡沫之夏", "流觞", "梦空", "北城凉筑",
                "狂风骤雨", "荒", "坟头", "诛笑靥", "忆逝逝", "泪已成哀", "追梦魂", "苦恋伊", "沈故", "一身仙气", "柠檬不萌", "山川", "盗梦者", "清宵半", "失心疯", "回响曲", "本间抚子", "心無所依",
                "莞尔笑", "落雪心", "红灯区", "寒沁朝月", "梦笑痴人", "旧情梦你", "残花月", "留君醉", "七喜", "不堪此负", "黛眉", "小永恒", "傲然于心", "笄发醒", "今生有缘", "空口言", "千颜·殇", "冷色调", "伤不起", "言川", "幕后花絮", "小时代", "余生相拥", "晨光搁浅", "旧年华", "诉衷情",
                "花海泪", "若迈风", "若迈风", "桃花无数", "黄昏恋", "红颜殆", "巴黎港", "少女心事", "妙曼姿", "归州", "梦巴黎", "第六感", "纷泪雨", "盗梦者", "清宵半", "失心疯", "回响曲", "本间抚子", "心無所依", "莞尔笑", "落雪心", "红灯区", "寒沁朝月", "梦笑痴人", "旧情梦你", "残花月",
                "留君醉", "七喜", "Outlier", "Escape", "Moonlight", "Miss", "single", "asd", "Dirge", "ssd", "hjk", "qwes", "dfwe", "erwr", "eterw", "ewqqew"};
        Random random = new Random();
        String name = englishCodeArray[random.nextInt(englishCodeArray.length)];
       /* //获取数字
        for (int i = 0; i < num; i++) {
            Integer num1 = englishCodeArray[random.nextInt(englishCodeArray.length)];
            arr.add(num1);
        }*/
        return name;
    }

    //计算是否等于24
    public static Boolean calculation(String num) {
        try {
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("js");
            Integer value = (Integer) engine.eval(num);
            if (value == 24) {
                return true;
            }
            return false;
        } catch (ScriptException e) {
            return false;
        }

    }


    public static void main(String[] args) {
        String orderIdByUUId = RandomUtils.getOrderIdByUUId();
        System.out.println(orderIdByUUId);
    }
}
